package assignment1;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
@SuppressWarnings("serial")
public class GUI extends JFrame {
PolynomialOperation poly;
int maximum;
private JButton exit = new JButton("Exit");
private JButton show1 = new JButton("Show polynom 1");
private JButton show2 = new JButton("Show polynom 2");
private JButton show3 = new JButton("Show polynom 3");
private JButton add = new JButton("Addition");
private JButton subs = new JButton("Substraction");
private JButton multi = new JButton("Multiplication");
private JButton derivation = new JButton("Derivation");
private JButton integrate = new JButton("Integrate");
private JButton division = new JButton("Division");
private JButton clear = new JButton("Clear");
private JFrame frame = new JFrame("Result");
private JTextArea text = new JTextArea();
private JPanel panel = new JPanel();
public GUI(PolynomialOperation poly) {
panel.setLayout(new GridLayout(6, 2));
this.poly = poly;
frame.setVisible(true);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
panel.add(show1);
panel.add(show2);
panel.add(add);
panel.add(subs);
panel.add(multi);
panel.add(show3);
panel.add(derivation);
panel.add(integrate);
panel.add(division);
panel.add(clear);
panel.add(exit);
panel.add(text);
showPoly1();
showPoly2();
add();
subs();
multi();
showPoly3();
derivation();
integrate();
exit();
text.setEditable(false);
System.out.println("");
text.setBackground(Color.GRAY);
clear();
}
private void writePoly(int[] polynom, int size) {
for (int j = size; j >= 0; j--) {
if (j != 0)
if (polynom[j] >= 0) {
text.append(polynom[j] + "x^" + j + "+");
} else {
text.append(polynom[j] + "x^" + j + "-");
}
else {
text.append(polynom[j] + j + "=0\n");
}
}
}
private void clear() {
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.setText("");
}
});
}
private void exit() {
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
}
private void showPoly1() {
show1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.append("Polynomial 1:");
writePoly(poly.getP1(), poly.getSize1());
}
});
}
private void showPoly2() {
show2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.append("Polynomial 2:");
writePoly(poly.getP2(), poly.getSize2());
}
});
}
private void add() {
add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
poly.addition();
}
});
}
private void subs() {
subs.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
poly.substraction();
}
});
}
private void multi() {
multi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
maximum = poly.getSize1() + poly.getSize2();
poly.multiplication();
}
});
}
private void showPoly3() {
show3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
maximum = Math.max(poly.getSize1(), poly.getSize2());
writePoly(poly.getPres(), maximum);
}
});
}
private void derivation() {
derivation.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
poly.derivate();
int i;
int polynom[] = poly.getP1();
for (int j = poly.getSize1(); j > 0; j--) {
i = j - 1;
if (j != 1)
if (polynom[j] >= 0) {
i = j - 1;
System.out.print(polynom[j] + "x^" + j + "+");
text.append(polynom[j] + "x^" + i + "+");
} else {
System.out.print(polynom[j] + "x^" + j + "-");
text.append(polynom[j] + "x^" + i + "-");
}
else {
System.out.print(polynom[j] + j + "=0\n");
text.append(polynom[j] + i + "=0\n");
}
}
}
});
}
private void integrate() {
integrate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
poly.integrate();
double m[] = poly.getM();
for (int j = poly.getSize1() + 1; j >= 2; j--) {
text.append(m[j - 1] + "x^" + j + "+");
}
}
});
}
}